#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""DocString
Instala y configura fail2ban
"""



def __update_conf_fail2ban( text ):
    res = []
    for line in text.split("\n"):
        if line.strip().startswith("bantime"):
            res.append(u"bantime = 900")
        elif line.strip().startswith("maxretry"):
            res.append(u"maxretry = 10")
        elif line.strip().startswith("mta"):
            res.append(u"mta = mail")
        elif line.strip().startswith("action ="):
            res.append(u"action = %(action_mwl)s")
        else:
            res.append(line)
    return "\n".join(res)

def install_fail2ban():
    """ Instala y configura fail2ban """
    CONFIG_FILE="/etc/fail2ban/jail.conf"
    DAEMON="/etc/init.d/fail2ban"
    # Ejecutamos las órdenes con sudo
    mode_sudo()

    # Instalamos el paquete en el caso de no estarlo
    package_ensure("fail2ban")
    if file_exists(CONFIG_FILE):
        save_original(CONFIG_FILE)
        # Configuramos el archivo /etc/fail2ban/jail.conf
        file_update(CONFIG_FILE, __update_conf_fail2ban)
    # Por defecto activa el chequeo ssh y se quieren chequar
    # otros servicios hay que modificar el archivo

    # Nos asegurmamos que esta en formato unix
    run("dos2unix " + CONFIG_FILE)

    # Reiniciamos el demonio
    run(DAEMON + " reload")



